﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;

namespace Entidades.Sistema
{
    public class OrdenProduccion
    {
        private int _cod_orden;
        private int _cap_total;
        private int _cap_utilizada;
        private int _cap_disponible;
        private DateTime _fecha_orden;
        private DateTime _fecha_inicio;
        private DateTime _fecha_fin;
        private Producto _producto;
        private ReservaMateriaPrima _reservaMateriaPrima;
        //private List<DetalleOrden> _CollDetalleOrden;
        private List<EtapaOrden> _CollEtapaOrden;
        private Auditoria _auditoria;
        private List<Pedido> _ColPedido;
        private StateOrden _stateOrden;

        public OrdenProduccion()
        {
            //_CollDetalleOrden = new List<DetalleOrden>();
            _CollEtapaOrden = new List<EtapaOrden>();
            _auditoria = new Auditoria();
            _stateOrden = new StateOrdenCreada();
        }

        public int cod_orden
        {
            get { return _cod_orden; }
            set { _cod_orden = value; }
        }
        public int cap_total
        {
            get { return _cap_total; }
            set { _cap_total = value; }
        }
        public int cap_utilizada
        {
            get { return _cap_utilizada; }
            set { _cap_utilizada = value; }
        }
        public int cap_disponible
        {
            get { return _cap_disponible; }
            set { _cap_disponible = value; }
        }
        public DateTime fecha_orden
        {
            get { return _fecha_orden; }
            set { _fecha_orden = value; }
        }
        public DateTime fecha_inicio
        {
            get { return _fecha_inicio; }
            set { _fecha_inicio = value; }
        }
        public DateTime fecha_fin
        {
            get { return _fecha_fin; }
            set { _fecha_fin = value; }
        }

        public Producto producto
        {
            get { return _producto; }
            set { _producto = value; }
        }
        public ReservaMateriaPrima reservaMateriaPrima
        {
            get { return _reservaMateriaPrima; }
            set { _reservaMateriaPrima = value; }
        }

        public Auditoria auditoria
        {
            get { return _auditoria; }
            set { _auditoria = value; }
        }


        public StateOrden stateOrden
        {
            get { return _stateOrden; }
            set { _stateOrden = value; }
        }

        
        
        public void EstadoCreada()
        {
            this.stateOrden = new StateOrdenCreada();
        }
        
        /* Comprobar si podemos borrarlos
        public void EstadoCancelada()
        {
            this.stateOrden = new StateOrdenCancelada();
        }

        public void EstadoFinalizada()
        {
            this.stateOrden = new StateOrdenFinalizada();
        }

        public void EstadoIniciada()
        {
            this.stateOrden = new StateOrdenIniciada();
        }

        public void EstadoInterrumpida()
        {
            this.stateOrden = new StateOrdenInterrumpida();
        }

        public void EstadoGeneral()
        {
            this.stateOrden = new StateOrdenGral();
        }*/

        public virtual string NombreProducto
        {
            get { return this.producto == null ? "" : this.producto.nombre; }
        }

        public virtual string Estado
        {
            get { return this.stateOrden == null ? "" : this.stateOrden.DevolverEstado(); }
        }
    }
}
